Pada project ini, saya mencoba memprediksi Goal Scored dengan parameter On-Target menggunakan Linear Regression.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('FIFA 2018 Statistic.csv')
df.head()
df.columns
df.shape
df.info()
df.describe()
df.isnull().sum()
Ada beberapa kolom yang berisi NaN. Setelah kita memperhatikan dataset tersebut, kolom yang memiliki data NaN tidak berpengaruh terhadap kolom On_Target dan Goal Scored. Kita bisa mengabaikan, memberi nilai kosong, atau menghapus kolom.
Disini saya akan menghapus kolom yang berisi nilai NaN
df = df.drop(columns=['1st Goal','Own goals','Own goal Time'])
df.isnull().sum()
df_cor = df.corr().abs()
df_cor
Dapat kita ketahui bahwa fitur On-Target memiliki korelasi yang paling kuat terhadap Goal-Scored
X = df.loc[:, ['On-Target']]
y = df.loc[:, ['Goal Scored']]
plt.scatter(X,y,color='red')
plt.xlabel('Shot On Target')
plt.ylabel('Goal Scored')
plt.show()
import seaborn as sns
sns.scatterplot(x=df['On-Target'], y=df['Goal Scored'], hue=df['Man of the Match'])
plt.show()
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=0, test_size=1/3)
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)
print('Model Score Linear Regression :', regressor.score(X_test, y_test))
df1 = pd.DataFrame(y_test).reset_index(drop = True)
df2 = pd.DataFrame(y_pred, columns=['Perdicted Goal Scored']).reset_index(drop=True)
print(df1.join(df2.astype(int)).head(10))
plt.figure(figsize=(10,10))
plot1 = plt.subplot(221)
plot1 = plt.scatter(X_train, y_train, color='r')
plot1 = plt.plot(X_train, regressor.predict(X_train))
plot1 = plt.title('Visualsasi Train Set')
plot1 = plt.xlabel('Shot On Target')
plot1 = plt.ylabel('Goal Scored')
plot2 = plt.subplot(222)
plot2 = plt.scatter(X_test, y_test, color='r')
plot2 = plt.plot(X_train, regressor.predict(X_train))
plot2 = plt.title('Visualisasi Test Set')
plot2 = plt.xlabel('Shot On Target')
plot2 = plt.ylabel('Goal Scored')
plot3 = plt.subplot(212)
plot3 = plt.scatter(X,y,color='r')
plot3 = plt.plot(X_train, regressor.predict(X_train))
plot3 = plt.title('Visualisasi Data Asli')
plot3 = plt.xlabel('Shot On Target')
plot3 = plt.ylabel('Goal Scored')
plt.show()
y_pred = regressor.predict([[10]])
print(f'Hasil Prediksi Goal Scored = {float(y_pred):,.1f}')
print(f'Hasil Prediksi Goal Scored Jika Nilai diBulatkan dengan Round = {float(y_pred.round())}')
print(f'Hasil Prediksi Goal Scored Jika Menghilangkan Nilai Dibelakang Koma = {int(y_pred)}')
plt.scatter(10, y_pred, color='r')
plt.plot(X_train, regressor.predict(X_train))
plt.title('Prediksi Goal Scored dengan 10 Shot On Target')
plt.xlabel('Shot On Target')
plt.ylabel('Goal Scored')
plt.show()
Untuk memprediksi Goal-Scored menggunakan parameter On-Target saja tidak mendapatkan hasil prediksi yang akurat, meskipun fitur On-Target memiliki korelasi paling tingggi terhadap Goal-Scored.
Project ini menggunakan hanya 1 Paramater yaitu On-Target, dengan menambah Paramater dan mencoba model machine learning lainnya akan menghasilkan Prediksi/Model Score yang lebih baik.